/*!
 * # 数据实体类:
 *  Org - 根组织
 * 
 * # 描述:
 *  表示一个最顶层的根组织。
 *  
 *  Copyright (c), 上海沃恩信息科技有限公司.
 *  All rights reserved.
 *  Licensed under BSD (https://www.pittypat.work/bsd.html).
 */

using Pittypat;

namespace Waln.Authority.Organization.Data
{
	/// <summary>
	/// 根组织。
	/// </summary>
	/// <remarks>
	/// 表示一个最顶层的根组织。
	/// </remarks>
	public sealed class Org : global::Pittypat.DataModel
	{
		#region 构造函数

		/// <summary>
		/// 初始化 Org 类的一个新实例。
		/// </summary>
		public Org()
		{
			// Id
			this.Id = null;
			// 名称
			this.Name = null;
			// 描述
			this.Description = null;
			// 设立日期
			this.CreateDate = null;
		}

		#endregion

		#region 属性

		/// <summary>
		/// 获取或者设置Id。
		/// </summary>
		public @uuid? Id { get; set; }

		/// <summary>
		/// 获取或者设置名称。
		/// </summary>
		/// <remarks>
		/// 组织或部门的名称。
		/// </remarks>
		public @string? Name { get; set; }

		/// <summary>
		/// 获取或者设置描述。
		/// </summary>
		/// <remarks>
		/// 对组织或者部门的描述信息。
		/// </remarks>
		public @string? Description { get; set; }

		/// <summary>
		/// 获取或者设置设立日期。
		/// </summary>
		/// <remarks>
		/// 组织或部门的设立日期。
		/// </remarks>
		public @date? CreateDate { get; set; }

		#endregion

		#region 方法

		/// <summary>
		/// 从一个 DbDataReader 中读取此对象。
		/// </summary>
		/// <param name="reader">包含对象数据的 DbDataReader 对象。</param>
		/// <exception cref="global::System.ArgumentNullException">reader 是 null。</exception>
		public override void Read(global::System.Data.Common.DbDataReader reader)
		{
			if (reader == null)
			{
				throw new global::System.ArgumentNullException("reader");
			}

			// Id
			this.Id = reader.GetValue<@uuid>("Id", defaultValue: this.Id);

			// 名称
			this.Name = reader.GetValue<@string>("Name", defaultValue: this.Name);

			// 描述
			this.Description = reader.GetValue<@string>("Description", defaultValue: this.Description);

			// 设立日期
			this.CreateDate = reader.GetValue<@date>("CreateDate", defaultValue: this.CreateDate);
		}

		/// <summary>
		/// 将当前对象作为 JSON 字符串写入指定的文本流。
		/// </summary>
		/// <param name="writer">目标文本流。</param>
		/// <exception cref="global::System.ArgumentNullException">writer 是 null。</exception>
		public override void Write(global::System.IO.TextWriter writer)
		{
			if (writer == null)
			{
				throw new global::System.ArgumentNullException("writer");
			}

			writer.Write('{');

			// Id
			writer.Write("\"id\":");
			this.Id.Write(writer);
			writer.Write(',');

			// 名称
			writer.Write("\"name\":");
			this.Name.Write(writer);
			writer.Write(',');

			// 描述
			writer.Write("\"description\":");
			this.Description.Write(writer);
			writer.Write(',');

			// 设立日期
			writer.Write("\"createDate\":");
			this.CreateDate.Write(writer);

			writer.Write('}');
		}

		#endregion
	}
}
